import { ActionSpec } from "./ActionSpec";
import { IActionReceiver } from "./IActionReceiver";
import { IHeuristicProvider } from "./IHeuristicProvider";

/**
 * 执行器
 * 对执行操作的抽象
 */
export interface IActuator extends IActionReceiver, IHeuristicProvider {

    /**
     * 当前执行器的规范(specification)
     */
    get actionSpec(): ActionSpec;

    /**
     * 执行器名称，用于排序
     */
    get name(): string;

    /**
     * 重置执行器内部状态
     */
    resetData(): void;

}

/**
 * 执行器扩展
 * 给抽象执行器们体统一些帮助方法
 */
export class IActuatorExtensions {

    public static totalNumberOfActions(actuator: IActuator): number {

        return 0;
    }

}